extends NPC

## 幻兽恢复NPC
## 提供幻兽恢复服务的NPC，可以花费金币恢复所有幻兽的生命值

# 恢复服务价格
@export var healing_price: int = 50

func _ready():
	# 设置NPC名称和肖像
	npc_name = "幻兽医师"
	npc_portrait = load("res://assets/healer_npc.svg")
	
	# 调用父类的_ready方法
	super._ready()
	
	print("幻兽医师已初始化")

func setup_default_dialogue():
	"""设置默认对话内容"""
	dialogue_data = [
		{"speaker": "npc", "text": "你好，我是幻兽医师。我可以帮助你恢复所有幻兽的生命值，只需要%d金币。" % healing_price},
		{"speaker": "player", "text": "我想恢复我的幻兽。"},
		{"speaker": "npc", "text": "好的，让我为你的幻兽进行治疗。"}
	]

func _on_dialogue_ended():
	"""对话结束时的处理 - 重写父类方法"""
	# 调用父类方法确保正常的对话结束处理
	super._on_dialogue_ended()
	
	# 执行治疗逻辑
	heal_all_phantom_beasts()

func heal_all_phantom_beasts():
	"""恢复所有幻兽的生命值"""
	if PhantomBeastManager == null or PlayerStatsManager == null:
		print("错误：无法获取PhantomBeastManager或PlayerStatsManager引用")
		return
	
	# 检查玩家金币是否足够
	var current_gold = PlayerStatsManager.get_gold()
	print("玩家当前金币：%d，治疗费用：%d" % [current_gold, healing_price])
	
	if current_gold < healing_price:
		print("金币不足，无法治疗")
		return
	
	# 扣除金币
	PlayerStatsManager.spend_gold(healing_price)
	print("已扣除%d金币用于治疗" % healing_price)
	
	# 恢复所有幻兽生命值
	PhantomBeastManager.heal_all_phantom_beasts_to_full()
	print("所有幻兽已恢复生命值")
	
	if GameSaveManager != null:
		var current_slot = GameSaveManager.current_save_slot
		if current_slot >= 0:
			GameSaveManager.save_game_to_slot(current_slot)
			print("治疗完成并已保存！")
			# 自动整理背包
			_auto_sort_beasts()
	else:
		print("治疗完成！")

func _auto_sort_beasts():
	"""自动整理幻兽背包"""
	if PhantomBeastManager == null:
		return
	
	# 整理幻兽背包
	PhantomBeastManager.sort_phantom_beasts()
	
	print("幻兽背包已自动整理！")
